草庐IT

xcode - 仅公开便利 init 的子类化类

全部标签

Java - (匿名子类)在对象实例构造期间覆盖方法

我正在维护一些Java8代码,如下所示:ClassEntity{protectedModeltheModel;publicEntity(){init();}protectedvoidinit(){this.theModel=newModel();}}ClassModel{}ClassSubModelextendsModel{}main{EntitynewEntity=newEntity(){@Overrideprotectedvoidinit(){this.theModel=newSubModel();}};}代码目前可以正确编译和运行,但我现在需要更新它。我的问题是:在newEnti

java - 是否可以从仅公开迭代器的 "readNext"部分的对象创建流?

我试图从一个csv文件中读取,但由于它的大小,没有先将它全部加载到内存中。我找到的用于读取csv的库是opencsv,它工作得很好,但只公开了两个方法:readAll()和readNext()readAll已经用完了,因为我不想同时在内存中,所以我想通过readNext从文件中延迟读取.理想情况下,我想通过流来结束阅读。我得到的最接近的方法是将readnext方法提供给Stream.generate结构,StreamcsvDataStream=Stream.generate(csvReader::readNext);但这显然有一个巨大的缺点,即一旦底层csvReader的迭代器耗尽就会

java - 你在子类中调用 super.finalize() 吗?

我(在某处)读到,当子类被垃圾回收时,不能保证调用父类的finalize(),这是否意味着大多数开发人员会覆盖finalize()在子类中调用super.finalize()? 最佳答案 Finalize不会自动为父类(superclass)调用。因此,如果您重写finalize,确保父类(superclass)得到清理的正确方法是protectedvoidfinalize(){try{//dosubclasscleanup}finally{super.finalize();}}请参阅这篇引用文章http://www.ibm.com

java - 如何正确声明子类的实例?

我目前正在Java中进行基于文本的冒险,目的是将其用作测试平台,以尝试从我正在阅读的这本Java书中学到的新东西。我现在正在尝试声明一个子类的实例(因为玩家被编写脚本来找到它)。父类是Item,它有两个子类:Weapon和Armour。但是,无论我尝试以何种方式声明它,我使用的IDE(Eclipse)都会标记该行并出现以下错误:NoenclosinginstanceoftypeItemisaccessible.MustqualifytheallocationwithanenclosinginstanceoftypeItem(e.g.x.newA()wherexisaninstanceo

Java:父类(super class)在某些条件下构造子类,可能吗?

我有这个条件publicclassA{publicaction(){System.out.println("ActiondoneinA");}}publicclassBextendsA{publicaction(){System.out.println("ActiondoneinB");}}当我创建B的实例时,该操作将只执行B中的操作,因为它会覆盖父类(superclass)的操作。问题是在我的项目中,父类(superclass)A已经被使用了太多次,我正在寻找一种方法,在某些条件下,当我创建A的实例时,它会检查它是否为真,用B替换自己。publicclassA{publicA(){i

java - 调用 java 子类保护方法时方法访问被拒绝

我有以下问题:我有一个类,试图使用反射来调用其OWN保护方法之一,但出现异常:java.lang.IllegalAccessException:访问方法被拒绝有人可以阐明这一点吗?基类:publicabstractclassBaseReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){//invokethecorrecteventmethod:Methodmethod;try{method=this.getClass().getDeclaredMethod("

具有参数化类型的 Java getConstructor(types)

如果我有一个带有参数化泛型的构造函数的类:publicclassFoo{publicFoo(Mapdata){...}}...如果我想调用,我该如何引用参数化Map的类:Constructorconstructor=cls.getConstructor(/*theMapclass!*/)(其中cls是Foo类。)我想做这样的事情:Constructorconstructor=cls.getConstructor(Map.class);...但这行不通。我相信对此有一个简单的答案! 最佳答案 在运行时,这:Map其实就是一个Map,没

java - 子类是否继承父类(super class)的私有(private)实例变量

Dosubclassesinheritprivatefields?这个问题解决了同样的问题,但我不太明白它如何满足下面(看似)矛盾的情况。http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html表示“子类不继承其父类的私有(private)成员。”这意味着它既不继承私有(private)实例变量也不继承私有(private)方法,对吧?但是,如果它从其父级继承公共(public)访问器方法,这将如何工作?它返回一个它不知道存在的实例变量?此外,我的计算机科学书籍(Baron的APComputerScienceA)

Java:覆盖子类中的抽象方法

我真的应该知道这一点,但出于某种原因我不明白以下内容。我的抽象类包含以下抽象方法:protectedabstractRuleDTOcreateRowToBeCloned(RuleDTOruleDTO);我还有另外一个类如下:EvaluationRuleDTOextendsfromRuleDTO然后在我的抽象类的子类中,我有以下实现,由于“必须覆盖或实现父类(superclass)型方法”而不允许:protectedEvaluationRuleDTOcreateRowToBeCloned(EvaluationRuleDTOruleDTO){但是,以下是允许的:protectedEvalu

java - 编译器生成的默认构造函数会公开吗?

当我写一个类Widget.javapublicclassWidget{intdata;Stringname;}编译器生成的构造函数是public还是default?公众会像publicclassWidget{intdata;Stringname;publicWidget(){}}而默认类似于publicclassWidget{intdata;Stringname;Widget(){}} 最佳答案 这取决于您的类可见性。编译器使用类可见性并生成具有相同可见性的无参数默认构造函数 关于jav